`:top
`!join`! est une commande `F33f`_`[POSIX`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=POSIX]`_`f qui permet de fusionner les lignes de deux fichiers ayant des champs communs. Elle réalise des `F33f`_`[jointures`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Jointure_(informatique)]`_`f, au sens de l'`F33f`_`[algèbre relationnelle`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Algèbre_relationnelle]`_`f, directement sur des fichiers texte.
Cette commande compare les lignes de deux fichiers triés une à une et si une correspondance est trouvée sur les colonnes passées en argument, elle affichera le regroupement des champs présents sur les mêmes lignes.
>>Contents
• `F0af`_`[Exemple`#exemple]`_`f
• `F0af`_`[Voir aussi`#voir-aussi]`_`f
• `F0af`_`[Liens externes`#liens-externes]`_`f
-─
>>Exemple
Soit le fichier `!`B100`F9d9contacts`f`b`! contenant la liste des membres d'une famille (id, nom, téléphone):
`B100`F9d9ID_1 Jean 123456`f`b
`B100`F9d9ID_2 Caroline 54321`f`b
`B100`F9d9ID_3 Louis 98765`f`b
Et le fichier `!`B100`F9d9ordinateurs`f`b`! contenant la liste des ordinateurs de la maison (id_ordinateur, ordinateur, id_personne).
`B100`F9d9L01 Linux ID_1`f`b
`B100`F9d9M01 Mac ID_2`f`b
`B100`F9d9W01 Windows ID_2`f`b
`B100`F9d9S01 Solaris ID_4`f`b
Premier cas simple. On veut joindre les deux fichiers sur la colonne 1 du premier fichier (-11) et la colonne 3 du deuxième fichier (-23).
`B100`F9d9% join -11 -23 contacts ordinateurs`f`b
`B100`F9d9`f`b
`B100`F9d9ID_1 Jean 123456 L01 Linux`f`b
`B100`F9d9ID_2 Caroline 54321 M01 Mac`f`b
`B100`F9d9ID_2 Caroline 54321 W01 Windows`f`b
Si on souhaite afficher la liste des couples personne-ordinateurs de la maison en formatant la sortie (option -o):
`B100`F9d9% join -11 -23 -o 1.2,2.2 contacts ordinateurs`f`b
`B100`F9d9`f`b
`B100`F9d9Jean Linux`f`b
`B100`F9d9Caroline Mac`f`b
`B100`F9d9Caroline Windows`f`b
Dans le cas d'une `F33f`_`[base de données`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Base_de_données]`_`f on parlerait d'une `F33f`_`[jointure`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Jointure_(informatique)]`_`f simple (STRAIGHT JOIN).
Pour afficher la liste de toutes les personnes, propriétaire ou non d'un ordinateur:
`B100`F9d9% join -a1 -e'NULL' -11 -23 -o 1.2,2.2 contacts ordinateurs`f`b
`B100`F9d9`f`b
`B100`F9d9Jean Linux`f`b
`B100`F9d9Caroline Mac`f`b
`B100`F9d9Caroline Windows`f`b
`B100`F9d9Louis NULL`f`b
Il s'agirait ici d'une jointure gauche (LEFT JOIN) en `F33f`_`[SGBD`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=SGBD]`_`f. Louis (ID_3) n'est effectivement pas repris dans le fichier `!`B100`F9d9ordinateurs`f`b`!.
Et enfin, la jointure droite (RIGHT JOIN), la liste de tous les ordinateurs et de leur utilisateur éventuel.
`B100`F9d9% join -a2 -e'NULL' -11 -23 -o 2.2,1.2 contacts ordinateurs`f`b
`B100`F9d9`f`b
`B100`F9d9Linux Jean`f`b
`B100`F9d9Mac Caroline`f`b
`B100`F9d9Windows Caroline`f`b
`B100`F9d9Solaris NULL`f`b
En effet, dans le fichier `!`B100`F9d9ordinateurs`f`b`!, le Solaris pointe vers un id (ID_4) qui n'existe pas dans le fichier `B100`F9d9contacts`f`b.
>>Voir aussi
`F33f`_`[GNU Core Utilities`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=GNU_Core_Utilities]`_`f
>>>Liens externes
• (fr) Page de manuel de join
• Portail de l’informatique
`c`F0af`_`[↑ Back to top`#top]`_`f`a